//vue2 Object.defineProperty();
//vu3 Reflect + Proxy
//Proxy是一种新的内置类型，它为JS对象提供一种新的代理机制，通过这种方式，可以在不修改原始对象的情况下，改变或者说
//自定义它们一些行为
let target = {
    a:1
}
//可以在handler定义一些函数,它们可以拦截对target的操作 
//target 要代理的对象或者说函数
//handler 它会包含一些函数，可以自定义你想的拦截的操作
let proxy = new Proxy(target,{
    get(target,property){//可以拦截对象的读取属性的操作，
      console.log(target,property)
      return Reflect.get(target,property);
    },
    set(target,property,value){//可以拦截对目标对象的赋值操作
        console.log(target,property,value)
        target[property]=value;
        return Reflect.set(target,property,value);
    },
/*     deleteProperty(target,property){
        console.log(target,property)
        Reflect.deleteProperty(target,property);
    } */
  });
/* console.log(proxy.a)
proxy.a=2;
console.log(proxy.a) */
delete proxy.a;
console.log(proxy.a)


